import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as go
data = pd.read_csv("https://raw.githubusercontent.com/rifatabrarjowad/phoneSalesAnalysis/master/file/apple_products.csv")
data
| Product Name | Product URL | Brand | Sale Price | Mrp | Discount Percentage | Number Of Ratings | Number Of Reviews | Upc | Star Rating | Ram | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | APPLE iPhone 8 Plus (Gold, 64 GB) | https://www.flipkart.com/apple-iphone-8-plus-g... | Apple | 49900 | 49900 | 0 | 3431 | 356 | MOBEXRGV7EHHTGUH | 4.6 | 2 GB |
| 1 | APPLE iPhone 8 Plus (Space Grey, 256 GB) | https://www.flipkart.com/apple-iphone-8-plus-s... | Apple | 84900 | 84900 | 0 | 3431 | 356 | MOBEXRGVAC6TJT4F | 4.6 | 2 GB |
| 2 | APPLE iPhone 8 Plus (Silver, 256 GB) | https://www.flipkart.com/apple-iphone-8-plus-s... | Apple | 84900 | 84900 | 0 | 3431 | 356 | MOBEXRGVGETABXWZ | 4.6 | 2 GB |
| 3 | APPLE iPhone 8 (Silver, 256 GB) | https://www.flipkart.com/apple-iphone-8-silver... | Apple | 77000 | 77000 | 0 | 11202 | 794 | MOBEXRGVMZWUHCBA | 4.5 | 2 GB |
| 4 | APPLE iPhone 8 (Gold, 256 GB) | https://www.flipkart.com/apple-iphone-8-gold-2... | Apple | 77000 | 77000 | 0 | 11202 | 794 | MOBEXRGVPK7PFEJZ | 4.5 | 2 GB |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 57 | APPLE iPhone SE (Black, 64 GB) | https://www.flipkart.com/apple-iphone-se-black... | Apple | 29999 | 39900 | 24 | 95909 | 8161 | MOBFWQ6BR3MK7AUG | 4.5 | 4 GB |
| 58 | APPLE iPhone 11 (Purple, 64 GB) | https://www.flipkart.com/apple-iphone-11-purpl... | Apple | 46999 | 54900 | 14 | 43470 | 3331 | MOBFWQ6BTFFJKGKE | 4.6 | 4 GB |
| 59 | APPLE iPhone 11 (White, 64 GB) | https://www.flipkart.com/apple-iphone-11-white... | Apple | 46999 | 54900 | 14 | 43470 | 3331 | MOBFWQ6BVWVEH3XE | 4.6 | 4 GB |
| 60 | APPLE iPhone 11 (Black, 64 GB) | https://www.flipkart.com/apple-iphone-11-black... | Apple | 46999 | 54900 | 14 | 43470 | 3331 | MOBFWQ6BXGJCEYNY | 4.6 | 4 GB |
| 61 | APPLE iPhone 11 (Red, 64 GB) | https://www.flipkart.com/apple-iphone-11-red-6... | Apple | 46999 | 54900 | 14 | 43470 | 3331 | MOBFWQ6BYYV3FCU7 | 4.6 | 4 GB |
62 rows × 11 columns
Before moving forward, let's have a quick look at whetherthis dataset contains any null values or not
print(data.isnull().sum())
Product Name 0 Product URL 0 Brand 0 Sale Price 0 Mrp 0 Discount Percentage 0 Number Of Ratings 0 Number Of Reviews 0 Upc 0 Star Rating 0 Ram 0 dtype: int64
The dataset doesn't have any null values. Now, let's have a loook at the descriptive statistics of the data:
print(data.describe())
Sale Price Mrp Discount Percentage Number Of Ratings \
count 62.000000 62.000000 62.000000 62.000000
mean 80073.887097 88058.064516 9.951613 22420.403226
std 34310.446132 34728.825597 7.608079 33768.589550
min 29999.000000 39900.000000 0.000000 542.000000
25% 49900.000000 54900.000000 6.000000 740.000000
50% 75900.000000 79900.000000 10.000000 2101.000000
75% 117100.000000 120950.000000 14.000000 43470.000000
max 140900.000000 149900.000000 29.000000 95909.000000
Number Of Reviews Star Rating
count 62.000000 62.000000
mean 1861.677419 4.575806
std 2855.883830 0.059190
min 42.000000 4.500000
25% 64.000000 4.500000
50% 180.000000 4.600000
75% 3331.000000 4.600000
max 8161.000000 4.700000
Now I will create a new dataframe by storing all the data about the top 10 highest-rated iPhones in India on Flipkart. It will help in understanding what kind of iPhones are liked the most in India:
highest_rated = data.sort_values(by = ["Star Rating"], ascending = False)
highest_rated = highest_rated.head(10)
print(highest_rated['Product Name'])
20 APPLE iPhone 11 Pro Max (Midnight Green, 64 GB) 17 APPLE iPhone 11 Pro Max (Space Grey, 64 GB) 16 APPLE iPhone 11 Pro Max (Midnight Green, 256 GB) 15 APPLE iPhone 11 Pro Max (Gold, 64 GB) 14 APPLE iPhone 11 Pro Max (Gold, 256 GB) 0 APPLE iPhone 8 Plus (Gold, 64 GB) 29 APPLE iPhone 12 (White, 128 GB) 32 APPLE iPhone 12 Pro Max (Graphite, 128 GB) 35 APPLE iPhone 12 (Black, 128 GB) 36 APPLE iPhone 12 (Blue, 128 GB) Name: Product Name, dtype: object
Now let's have a look at the number of ratings of the highest-rated iPhones on Flipkart:
iphones = highest_rated["Product Name"].value_counts()
labels = iphones.index
counts = highest_rated["Number Of Ratings"]
figure = px.bar(highest_rated, x = labels, y = counts, title = "Number Of Ratings highest rated i phones")
figure.show()
According to the above bar graph. APPLE iPhone 8 plus (Gold, 64 GB) has the most rating on Flipkart.
Now let's have a look at the number reviews of the highest-rated iPhones on Flipkart.
iphones = highest_rated["Product Name"].value_counts()
labels = iphones.index
counts = highest_rated["Number Of Reviews"]
figure = px.bar(highest_rated, x = labels, y = counts, title = "Number Of Reviews highest rated iPhones")
figure.show()
APPLE iPhones 8 plus (Gold, 64 GB) is also leading in the highest number of reviews on Flipkart
among the highest rated iPhones in India. Now let's have a look at the relationship between
the sale price of iPhones and their ratings on Flipkart.
figure = px.scatter(data_frame = data, x= "Number Of Ratings",
y = "Sale Price", size = "Discount Percentage", trendline = "ols",
title = "Relationship between Sale Price and Number of Ratings of iPhone")
figure.show()
There is negative relationship between the sale price of iPhone and the number of ratings. It means with lower sale prices are sold more in India. Now let's have a loook at the relationship between the discount percentage on iPhone on Flipkart and the number of ratings:
figure = px.scatter(data_frame = data, x = "Number Of Ratings",
y = "Discount Percentage", size = "Sale Price", trendline = "ols",
title = "Ralationship between Discount percentage and Number of Rating")
figure.show()
Apple iPhone 8 plus (Gold, 64 GB)was the most appreciated iPhone in India, iPhone with lower sale prices are sold more in India with high discounts are sold more in India.